/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package simhya.model.transition;

import simhya.matheval.SymbolArray;
import simhya.model.store.Store;

/**
 *
 * @author Luca
 */
public interface AtomicReset {

    public void computeNewValues();
    public void computeNewValuesCache();
    public void updateStoreVariables(double [] variables);
    public void updateStoreVariables(SymbolArray variables);
    public boolean isConstantIncrement();
    public double getConstantIncrement();
    public java.util.ArrayList<Integer> getUpdatedVariables();

    /**
     * checks if the atomic reset is a basic reset for the given variable
     * @param variable
     * @return
     */
    public boolean isSimpleResetForVariable(int variable);

    public String toModeLanguage(Store store);

    /*
     * TODO:
     * construct an interface for atomic resets,
     * supporting two methods:
     * computeNewValues
     * updateStore
     * Then do two implementations. The first is like the
     * current one: variable to reset + function
     * The second one wraps up a constraint objects
     *
     */

}
